package seTOee.proxy.instance;
import java.lang.reflect.Proxy;

public class ProxyUtil {
        //参数：
        // 1、类加载器-》生成代理类
        // 2、代理对象实现的接口，
        // 3、处理代理对象方法调用的代理对象
        public UserService createProxy(UserService us) {

            return (UserService) Proxy.newProxyInstance(
                    ProxyUtil.class.getClassLoader(),//类加载器
                    us.getClass().getInterfaces(),//拿到代理对象实现的接口
                    (proxy1, method, args) -> {
                        String methodName = method.getName();
                        //计算每个模块的运行时间
                        long start = System.currentTimeMillis();
                        Object result = method.invoke(us, args);
                        long end = System.currentTimeMillis();
                        System.out.println(methodName + "方法运行时间：" + (end - start)/1000.00+"s");
                        return result;
                    }
            );
        }
}
